Crear código en R, uso colaborativo y reproducible
Manejo de datos
La exploración de datos nos permite verificar su calidad, entender los datos con los que trabajamos. Visualizar nuestros datos es un buen comienzo, pero a menudo vamos a necesitar transformar los datos previamente.
Formato tidy data
Cada variable tiene su propia columna Cada observación tiene su propia fila Cada valor tiene su propia celda
Ejemplo organización “tidy”
Buenas prácticas en el manejo de datos
Las variables van en columnas (e.g. mediciones: altura, peso, sexo)
Las observaciones cada una en una fila (e.g. individuos de pingüinos)
Evitar espacios, números, y caracteres especiales en los nombres de columnas.
Siempre anotar valores de cero, para diferenciarlos de datos faltantes.
Usar celdas vacías o con NA para datos faltantes.
Las fechas incluirlas en columnas separadas como year, month, day.
No combinar varias informaciones en una misma celda.
Realiza todas las manipulaciones de datos mediante código para dejar constancia de los cambios.
library(here)library(tidyverse)library(tm)library(wordcloud2)library(readxl)# se puede importar tablas desde excel, csv, ggsheets, txt...datos_curso =read_excel(here("data/datos-curso.xlsx"))# Vemos un resumenstr (datos_curso)
tibble [19 × 15] (S3: tbl_df/tbl/data.frame)
$ Id : num [1:19] 1 2 3 4 5 6 7 8 9 10 ...
$ Hora de inicio : POSIXct[1:19], format: "2025-10-14 08:29:14" "2025-10-14 08:42:03" ...
$ Hora de finalización : POSIXct[1:19], format: "2025-10-14 08:37:19" "2025-10-14 08:44:21" ...
$ Correo electrónico : chr [1:19] "anonymous" "anonymous" "anonymous" "anónimo" ...
$ Nombre : logi [1:19] NA NA NA NA NA NA ...
$ Comentarios: DNI o documento : logi [1:19] NA NA NA NA NA NA ...
$ Curso de la primera matrícula en el programa de doctorado : chr [1:19] "2024-25" "2023-24" "2022-23" "2023-24" ...
$ Puntos: Curso de la primera matrícula en el programa de doctorado : num [1:19] 0 0 0 NA NA NA NA NA NA NA ...
$ Comentarios: Curso de la primera matrícula en el programa de doctorado: logi [1:19] NA NA NA NA NA NA ...
$ Cuéntanos tu experiencia con R : chr [1:19] "He usado R ya en anteriores ocasiones, tengo una pequeña base de conocimientos y estoy familiarizada con el lenguaje." "Usé R en el máster y para hacer algunos gráficos durante el principio de la tesis, pero me falta mucha segurida"| __truncated__ "Para mi tesis en el programa he debido desarrollar un Tn-seq, personalmente me ha costado horas de trabajo crea"| __truncated__ "He utilizado R en algunas asignaturas del grado y del máster, pero de una manera superficial." ...
$ Puntos: Cuéntanos tu experiencia con R : num [1:19] 0 0 0 NA NA NA NA NA NA NA ...
$ Comentarios: Cuéntanos tu experiencia con R : logi [1:19] NA NA NA NA NA NA ...
$ Observaciones : chr [1:19] NA NA NA NA ...
$ Puntos: Observaciones : num [1:19] 0 0 0 NA NA NA NA NA NA NA ...
$ Comentarios: Observaciones : logi [1:19] NA NA NA NA NA NA ...
#View (datos_curso) # Se nos abre en Rstudio# seleccionamos columnas de un dataframe con $datos_curso$`Hora de inicio`
[1] "Id"
[2] "Hora de inicio"
[3] "Hora de finalización"
[4] "Correo electrónico"
[5] "Nombre"
[6] "Comentarios: DNI o documento"
[7] "Curso de la primera matrícula en el programa de doctorado"
[8] "Puntos: Curso de la primera matrícula en el programa de doctorado"
[9] "Comentarios: Curso de la primera matrícula en el programa de doctorado"
[10] "Cuéntanos tu experiencia con R"
[11] "Puntos: Cuéntanos tu experiencia con R"
[12] "Comentarios: Cuéntanos tu experiencia con R"
[13] "Observaciones"
[14] "Puntos: Observaciones"
[15] "Comentarios: Observaciones"
datos_curso_filtrado <- datos_curso |>rename (curso ="Curso de la primera matrícula en el programa de doctorado",experiencia ="Cuéntanos tu experiencia con R",comentarios ="Observaciones",email ="Correo electrónico") |>select (curso, experiencia, comentarios, email) |>mutate (email =str_replace(email, "anonymous", "anónimo")) |>filter (curso =="2022-23")words <-tolower(unlist(strsplit(datos_curso_filtrado$experiencia, " ") ) ) words <-gsub("[[:punct:][:digit:]]", "",words)stop_es <-stopwords("spanish")words_clean <- words[!words %in% stop_es]# Plotwordcloud2(data=table(words_clean), size=0.5,color =rep(RColorBrewer::brewer.pal(11, "PRGn"), 20))